package br.ucb.sirad.dao;

import java.io.Serializable;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.ucb.sirad.beans.Usuario;

public class UsuarioDAO extends DAO<Usuario> implements Serializable{

	private EntityManager em;

	public UsuarioDAO() {
		super(Usuario.class);
	}

	public Object existe(Usuario usuario) {
		em = new JPAUtil().getEntityManager();
		em.getTransaction().begin();

		Query query = em.createQuery("from "+Usuario.class.getName()+" where login = :login and senha = :senha and icExclusao is false")
				.setParameter("login", usuario.getLogin())
				.setParameter("senha", usuario.getSenha());

		Object user ;
		boolean encontrado = !query.getResultList().isEmpty();
		if(encontrado){
			user = query.getResultList().get(0);
		}else{
			user = null;
		}

		em.getTransaction().commit();
		em.close();

		return user;
	}	

	public List<Usuario> consultaUsuarios(String nome,Long perfilInicio,Long perfilFim,int firstResult, int maxResults){
		EntityManager em = new JPAUtil().getEntityManager();
		em.getTransaction().begin();

		Query query = em.createQuery("from "+Usuario.class.getName()+" where nome like :nome and perfil between :perfilInicio and :perfilFim and icExclusao is false")
				.setParameter("nome", "%"+nome+"%")
				.setParameter("perfilInicio", perfilInicio)
				.setParameter("perfilFim", perfilFim);


		query = query.setFirstResult(firstResult).setMaxResults(maxResults);

		List<Usuario> lista = query.getResultList();
		em.getTransaction().commit();
		em.close();

		return lista;
	}
}
